iT邦幫忙

DAY 6
1

Azure 30天系列 第 6

Day 6. Azure資料的轉移 (匯入匯出, BCP, Linked Server)

  • 分享至 

  • xImage
  •  
  1. 接下來實作的是現有資料與Azure SQL之間的傳遞, 一般常用的'匯入匯出'顯然在Azure AQL上沒有這個選項

  1. 那從本機端試看看匯入匯出

  1. 匯入資料來源選擇Azure SQL, 但無法選取資料庫清單, 會出現錯誤訊息

  1. 資料來源選擇SQL Server native Client 11.0就可以 (預設為10.0)

  1. 目的地資料庫選擇本機

  1. 就可以看到SQL Azure上的table與View了

  1. 一直按'下ㄧ步'直到執行成功

  1. 在本機資料庫即可看到匯入完成

  1. 再來反向上傳資料, 本機有一個相同結構的Table要上到Azure SQL

  1. 這次來源選擇本機

  1. 從本機將MySecondTable上到Azure SQL

  1. 會發生錯誤, 原因是匯入匯出的當下, 若目的地資料庫沒有該Table, SQL會自動建立, 但是不包含index, 而index又是Azure SQL Table必須的

  1. 先在Azure SQL上建立相對應的Table

  1. 又發生錯誤, 這次的錯誤是字碼頁

  1. 為了將字串資料改用Unicode, 先將Table DROP 掉, 再用NVARCHAR方式重建

  1. 再次匯出匯入, 資料上傳成功

  1. 原本在本機由於是中文版, 定序預設為Chinese_Taiwan_Stroke_CI_AS. 為了避免之後困擾, 之後在Azure SQL開Table都用Unicode, 下圖可見VARCHAR跟NVARCHAR的差異

  1. 資料也可以藉由BCP匯出 (-P 之後帶自己的密碼)
    bcp MyFirstTable out test.txt -c -U azure@yid66sepi2 -S yid66sepi2.database.windows.net -d sql0001 -P ########

  1. 或是使用Linked Server來選取Azure SQL資料
    參考: http://asadkhan1973.blogspot.tw/2012/09/add-sql-azure-as-linked-server.html

在本機執行以下script (user必須帳號加server name, password要改為自己的)
EXEC master.dbo.sp_addlinkedserver
@server = N'Azure',
@srvproduct=N'',
@provider=N'sqlncli',
@datasrc=N'yid66sepi2.database.windows.net',
@catalog=N'sql0001'

EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'Azure',
@useself=N'False',
@locallogin=NULL,
@rmtuser=N'azure@yid66sepi2.database.windows.net',
@rmtpassword='########'

SELECT * FROM Azure.sql0001.dbo.MyFirstTable


上一篇
Day 5. Azure資料庫概述
下一篇
Day 7. 網站跟資料庫一起上雲去
系列文
Azure 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言